package com.briup.jz.service;

import com.briup.jz.bean.User;
import com.briup.jz.bean.extend.UserExtend;
import com.briup.jz.utils.CustomerException;

import java.util.List;

/**
 * @ProjectName: jz
 * @Author: xjs
 * @Description: 用户业务接口
 * @Date: 2020/6/12 13:43
 */
public interface IUserService {

    /**
     * @Author xjs
     * @Description 添加或更新用户；如果传入id，更新用户信息；否则添加
     * @return void
     * @Date 2020/6/12 13:47
    */
    void saveOrUpdate(User user) throws CustomerException;

    /**
     * @Author xjs
     * @Description 根据id删除用户
     * @return void
     * @Date 2020/6/12 13:47
    */
    void deleteById(Long id) throws CustomerException;

    /**
     * @Author xjs
     * @Description 查询所有用户以及其角色
     * @return java.util.List<com.briup.jz.bean.impl.UserExtend>
     * @Date 2020/6/12 13:47
    */
    List<UserExtend> findAllWithRole();

    /**
     * @Author xjs
     * @Description 根据id查询用户及其角色信息
     * @return com.briup.jz.bean.extend.UserExtend
     * @Date 2020/6/13 16:28
    */
    UserExtend findByIdWithRole(Long id);

    /**
     * @Author xjs
     * @Description 更新用户状态；若当前为正常，则修改为禁用；否则。。。。。
     * @return void
     * @Date 2020/6/13 17:11
    */
    void updateStatus(Long id) throws CustomerException;

    /**
     * @Author xjs
     * @Description 根据id来修改用户的头像
     * @return void
     * @Date 2020/6/13 17:28
    */
    void updateUserFace(Long id , String userFace) throws CustomerException;

    /**
     * @Author xjs
     * @Description 查询用户是否有权限（用户id ，权限名称）
     * @return void
     * @Date 2020/6/13 22:43
    */
    void checkPrivilege(Long id , String privilege) throws CustomerException;

    /**
     * @Author xjs
     * @Description 查找所有员工
     * @return java.util.List<com.briup.jz.bean.extend.UserExtend>
     * @Date 2020/6/17 22:29
    */
    List<UserExtend> findAllEmployee();

    /**
     * @Author xjs
     * @Description 查询状态为正常的员工
     * @return java.util.List<com.briup.jz.bean.extend.UserExtend>
     * @Date 2020/6/18 17:58
    */
    List<UserExtend> findAllEmployeeAndStatus();

    /**
     * @Author xjs
     * @Description 根据姓名模糊查询
     * @return java.util.List<com.briup.jz.bean.extend.UserExtend>
     * @Date 2020/6/18 19:57
    */
    List<UserExtend> findUserByName(String name);
}
